Contact picker

ABSTRACT

An interface for enabling a user to quickly access contact information automatically displays a list of expected contacts that are most likely to be selected by the user when attention is directed to a type-in line requiring contact information. When a contact is selected, the corresponding and appropriate contact information is automatically entered into the type-in line. If a user does not select a listed contact, but instead begins manually typing in the contact information then the interface performs a search and displays a list of unexpected contacts having contact information matching the typed input from the user. The interface also provides a menu with additional search options for searching for desired contact information. The additional search options include directory searching and filtered searching. The application hosting the interface can specify the appropriate contact information that it requires.

BACKGROUND OF THE INVENTION

1. The Field of the Invention

The present invention relates to user interface menus in computers andelectronic devices and, more particularly, to methods, systems, andcomputer program products for obtaining and displaying desired contactinformation in computer applications.

2. Background and Relevant Art

The term “contact,” as described herein, generally refers to any person,group, organization, business, household, or other type of identifiableentity. The term “contact information,” as defined herein, generallyrefers to any information that corresponds to a contact and that may beconsidered relevant for identifying, contacting, accessing,corresponding or communicating with the contact. In the context of thepresent application, contact information is used by an application toperform a desired function, such as, for example, sending an email,initiating a telephone call, accessing a website, initiating a gamingsession, performing a financial transaction, and so forth. Non-limitingexamples of contact information include names, aliases, telephonenumbers, email addresses, home addresses, instant messaging (IM)addresses, and web addresses. Contact information can also refer toother types of information such as the status of a contact. For example,information indicating a contact is currently online, or on a telephoneline may also be broadly considered as contact information.

Many applications require contact information. Examples of someapplications that require contact information include emailapplications, network gaming applications, instant messagingapplications, telephone and telephony applications, Internetapplications, financial applications, word processing applications, andbusiness management applications.

Applications that require contact information typically provideinterfaces and menus for entering the desired contact information withinone or more “type-in” lines. “Type-in” lines generally comprise an inputfield configured to receive text characters that comprise the desiredcontact information. For example, an email interface will typicallyinclude type-in lines for receiving the email addresses of the intendedemail recipients. Contact information can normally be typed directlyinto the appropriate type-in lines, hence the name.

Some interfaces are also configured to automatically populate a type-inline with desired contact information, which is obtained from adirectory corresponding to the particular application. For example,email applications typically include interface menus for looking up theemail addresses of the contacts that are stored within the email contactdirectory. Likewise, a telephony application typically includesinterface menus for looking up and accessing the telephone numbers ofthe contacts stored in the telephony contact directory. This searchfunctionality provided by some interfaces is useful for helping toidentify and select contact information that has either been forgottenor that is undesirably too long for manual entry.

Although existing interfaces for obtaining contact information areuseful for their intended purposes, their utility is somewhat limitedbecause they are specifically catered for a particular application.(e.g., Email search interfaces are configured to obtain email addresses,telephony search interfaces are configured to obtain telephone numbers,etc.) Furthermore, the vast array of different interfaces, each havingits own unique characteristics, has complicated the task of learning howto utilize the interfaces to search for and obtain the desired contactinformation. Requiring each application to create a separate directoryalso reflects an inefficient expenditure of time and resources.

BRIEF SUMMARY OF THE INVENTION

The present invention is directed to improved methods, systems, andcorresponding computer program products and interfaces for obtainingdesired contact information.

According to one aspect of the invention, an interface displays a listof expected contacts that are most likely to be selected by a userwhenever focus input is directed at a type-in line, or another inputobject, requiring contact information. Focus input may comprise apointer hovering over the type-in line or any other input that wouldindicate a user wishes to populate the type-in line with contactinformation.

The displayed list of expected contacts, which may be orderedalphabetically, by most recent use, or most often use, includes apredefined number of contacts that are determined to be the most likelyselected contacts for the given application. The short list of expectedcontacts may also include an option for viewing any additional expectedcontacts that are not displayed in the list. The list of expectedcontacts can be obtained from a single contact information directoryassociated with a particular application, as well as from a plurality ofcontact information directories that can be accessed by the interfaceand corresponding modules of the invention.

When an expected contact is selected, the desired contact informationthat is appropriate for the current application and that corresponds tothe expected contact is automatically entered into the type-in line andhanded to the application programmatically. For example, the selectionof an expected contact in an email application will automaticallypopulate the type-in line with the appropriate email address or a‘friendly name’ that comprises a link to the email address. It will beappreciated that the applications hosting the interface can specify thecontact information that is required. The appropriate contactinformation is obtained from any number of directories that are searchedby the user interface. The hosting applications can also specifyrequired characteristics for a valid contact selection. For example, thehosting application can specify via an API to only show contacts havinga predetermined combination of required characteristics.

According to another aspect of the invention, if a user doesn't selectone of the expected contacts, the user can begin typing desired contactinformation directly into the type-in line, thereby causing theinterface to search through the one or more contact informationdirectories for any unexpected contacts having contact informationmatching the input entered by the user. When only a single match isidentified by the search, the type-in line is automatically populatedwith the remaining portion of the contact information that matches theuser input. When a plurality of unexpected contacts are discovered thateach have contact information matching the user input, they aredisplayed in a list for user selection. When the search fails toidentify any matching contacts, the user interface displays additionaloptions for searching for the desired contact information.

According to another aspect of the invention, the selection of a listedcontact causes the interface to display a plurality of different contactinformation options prior to populating the type-in line. For example,with reference to an email application, the selection of a contactcauses the interface to display all email address options associatedwith the selected contact, thereby enabling the desired and appropriateemail address to be selected by the user for automatic entry into thetype-in line.

According to yet another aspect of the invention, the interface displaysa list of related contacts associated with a selected contact, therebyenabling a user to select any number of related contacts so that theircontact information can also be automatically entered into theappropriate type-in line(s).

Additional features and advantages of the invention will be set forth inthe description which follows, and in part will be obvious from thedescription, or may be learned by the practice of the invention. Thefeatures and advantages of the invention may be realized and obtained bymeans of the instruments and combinations particularly pointed out inthe appended claims. These and other features of the present inventionwill become more fully apparent from the following description andappended claims, or may be learned by the practice of the invention asset forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only typical embodiments of the invention and are not thereforeto be considered to be limiting of its scope, the invention will bedescribed and explained with additional specificity and detail throughthe use of the accompanying drawings in which:

FIG. 1 illustrates one embodiment of an operating system that provides asuitable operating environment for the present invention;

FIG. 2 illustrates one embodiment of a functional block diagram ofvarious components of the invention;

FIG. 3 is a flowchart illustrating certain acts of a method fordisplaying contact information according to the invention;

FIG. 4 illustrates one embodiment of a list that is provided by theinterface of the invention and that contains expected contacts;

FIG. 5 illustrates one embodiment of a list that is provided by theinterface of the invention and that contains related contacts;

FIG. 6 illustrates one embodiment of a list that is provided by theinterface of the invention and that contains expected contacts and thatfurther includes a plurality of contact information optionscorresponding to a selected contact;

FIG. 7 illustrates one embodiment of a type-in line that is populated atleast partially with a first contact name and a second contact name; and

FIG. 8 illustrates one embodiment of a window that is provided by theinterface of the invention and that contains additional search optionsfor searching for desired contact information.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention is directed to improved methods, systems, andcorresponding computer program products and interfaces for obtaining anddisplaying desired contact information from one or more contactinformation directories. The embodiments of the present invention maycomprise or be performed with a special purpose or general-purposecomputer including various computer hardware, as discussed in greaterdetail below.

Embodiments within the scope of the present invention also includecomputer-readable media for carrying or having computer-executableinstructions or data structures stored thereon. Such computer-readablemedia can be any available media that can be accessed by a generalpurpose or special purpose computer. By way of example, and notlimitation, such computer-readable media can comprise RAM, ROM, EEPROM,CD-ROM or other optical disk storage, magnetic disk storage or othermagnetic storage devices, or any other medium which can be used to carryor store desired program code means in the form of computer-executableinstructions or data structures and which can be accessed by a generalpurpose or special purpose computer. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as acomputer-readable medium. Thus, any such connection is properly termed acomputer-readable medium. Combinations of the above should also beincluded within the scope of computer-readable media.Computer-executable instructions comprise, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device to perform a certain function orgroup of functions.

Operating Environment

FIG. 1 and the following discussion are intended to provide a brief,general description of a suitable computing environment in which theinvention may be implemented. However, it should be emphasized that thepresent invention is not necessarily limited to any particularcomputerized system and may be practiced in a wide range of computerizedsystems including, but not limited to telephone and other communicationdevices, PDAs, information kiosks, and so forth.

Although not required, the invention will be described in the generalcontext of computer-executable instructions, such as program modules,being executed by computers in network environments. Generally, programmodules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Computer-executable instructions, associated datastructures, and program modules represent examples of the program codemeans for executing steps of the methods disclosed herein. Theparticular sequence of such executable instructions or associated datastructures represents examples of corresponding acts for implementingthe functions described in such steps.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including personal computers, hand-held devices,multi-processor systems, microprocessor-based or programmable consumerelectronics, network PCs, minicomputers, mainframe computers, and thelike. The invention may also be practiced in distributed computingenvironments where tasks are performed by local and remote processingdevices that are linked (either by hardwired links, wireless links, orby a combination of hardwired or wireless links) through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a general purpose computing system in the form of aconventional computer 120, including a processing unit 121, a systemmemory 122 comprising computer readable media, and a system bus 123 thatcouples various system components including the system memory 122 to theprocessing unit 121. The system bus 123 may be any of several types ofbus structures including a memory bus or memory controller, a peripheralbus, and a local bus using any of a variety of bus architectures. Thesystem memory includes read only memory (ROM) 124 and random accessmemory (RAM) 125. A basic input/output system (BIOS) 126, containing thebasic routines that help transfer information between elements withinthe computer 120, such as during start-up, may be stored in ROM 124.

The computer 120 may also include a magnetic hard disk drive 127 forreading from and writing to a magnetic hard disk 139, a magnetic diskdrive 128 for reading from or writing to a removable magnetic disk 129,and an optical disk drive 130 for reading from or writing to removableoptical disk 131 such as a CD-ROM or other optical media. The magnetichard disk drive 127, magnetic disk drive 128, and optical disk drive 130are connected to the system bus 123 by a hard disk drive interface 132,a magnetic disk drive-interface 133, and an optical drive interface 134,respectively. The drives and their associated computer-readable mediaprovide nonvolatile storage of computer-executable instructions, datastructures, program modules and other data for the computer 120.Although the exemplary environment described herein employs a magnetichard disk 139, a removable magnetic disk 129 and a removable opticaldisk 131, other types of computer readable media for storing data can beused, including magnetic cassettes, flash memory cards, digitalversatile disks, Bernoulli cartridges, RAMs, ROMs, and the like.

Program code means comprising one or more program modules may be storedon the hard disk 139, magnetic disk 129, optical disk 131, ROM 124 orRAM 125, including an operating system 135, one or more applicationprograms 136, other program modules 137, and program data 138. A usermay enter commands and information into the computer 120 throughkeyboard 140, pointing device 142, or other input devices (not shown),such as a microphone, joy stick, game pad, satellite dish, scanner, orthe like. These and other input devices are often connected to theprocessing unit 121 through a serial port interface 146 coupled tosystem bus 123. Alternatively, the input devices may be connected byother interfaces, such as a parallel port, a game port or a universalserial bus (USB). A monitor 147 or another display device is alsoconnected to system bus 123 via an interface, such as video adapter 148.In addition to the monitor, personal computers typically include otherperipheral output devices (not shown), such as speakers and printers.

The computer 120 may operate in a networked environment using logicalconnections to one or more remote computers, such as remote computers149 a and 149 b. Remote computers 149 a and 149 b may each be anotherpersonal computer, a server, a router, a network PC, a peer device orother common network node, and typically include many or all of theelements described above relative to the computer 120, although onlymemory storage devices 150 a and 150 b and their associated applicationprograms 136 a and 136 b have been illustrated in FIG. 1. The logicalconnections depicted in FIG. 1 include a local area network (LAN) 151and a wide area network (WAN) 152 that are presented here by way ofexample and not limitation. Such networking environments are commonplacein office-wide or enterprise-wide computer networks, intranets and theInternet.

When used in a LAN networking environment, the computer 120 is connectedto the local network 151 through a network interface or adapter 153.When used in a WAN networking environment, the computer 20 may include amodem 154, a wireless link, or other means for establishingcommunications over the wide area network 152, such as the Internet. Themodem 154, which may be internal or external, is connected to the systembus 123 via the serial port interface 146. In a networked environment,program modules depicted relative to the computer 120, or portionsthereof, may be stored in the remote memory storage device. It will beappreciated that the network connections shown are exemplary and othermeans of establishing communications over wide area network 152 may beused.

FIG. 2 illustrates a functional block diagram of several components ofthe invention. As shown, a computing system 200 is connected with adisplay device 210 and a remote device 220. The connection link betweeneach of these components may be a physical connection or a wirelessconnection. It will be appreciated that the display device 210 may belocated remotely from the computing system 200 or integrally connectedwith the computing system 200. The display device 210 may comprise anyscreen, monitor, or other device that is configured to display images.

During use the computing system utilizes a user interface to displaydesired contact information at the display device. The functionality ofthe user interface to display desired contact information is enabled byvarious computer modules, such as user interface module 230, remotestore interface module 240, schema module 250, conflict resolver module255, and communication module 260, each of which will now be described.

The user interface module 230 includes sufficient computer executableinstructions for operably displaying a user interface at the displaydevice and for responding to user input entered at the user interface.The remote store interface module 240 includes sufficient computerexecutable instructions for searching and processing contact informationstored at remote devices, such as remote device 220. Remote device 220may be a remote computer, or server containing contact information.

The schema module 250 contains sufficient computer executableinstructions for mapping contact information into categories andclassifications that can be recognized by the user interface for displayon the display device 210. The schema module 250 is useful for enablingcontact information from remote stores to be organized according to asingle unifying schema. The schema module 250 may also be used to mapand identify contact information stored in local stores, such as storagemedia 270. The schema module 250 also correlates the properties of thecontacts and their contact information (e.g., phone number, officenumber, group memberships, and so forth) for enabling sophisticatedsearching and querying of the contact information.

The conflict resolver module 255 includes sufficient computer executableinstructions for comparing disparate contact information and fordetermining which of the contact information is most accurate andappropriate for a given application based on instructions received fromthe API of a given application. The resolver module 255 can also do‘fuzzy matching,’ so as to identify similar data that is not exactly thesame. For example, the resolver module 255 can enable matching of thenames “John” and “Jon.” This is useful for performing searches, asgenerally alluded to below. Conflict resolver module 255 also monitorsand determines what contact information is most likely to be expected orused by a user, such as, for example, based on the past use of thecontact information. Accordingly, the conflict resolver module 255 mayutilize space on a storage medium, such as storage media 270 fortracking use of contact information.

The communication module 260 includes sufficient computer executableinstructions for enabling communication between the various modules, aswell as the display device 210, the remote device 220, and the storagemedia of the remote device 220 and computing system 200. In particular,the communication module enables the modules to access and processcontact information that is stored in one or more contact informationdirectories that may be stored locally and remotely.

The present embodiment illustrates three contact informationdirectories, 280 a, 280 b, and 280 c that correspond to differentapplications. For example, directory 280 a may correspond to an emailapplication and directory 280 b may correspond to a telephonyapplication. It will be appreciated that each directory 280 a, 280 b,and 280 c will include information that is application specific (e.g.,the email application directory 280 a will have email addresses). Thedirectories 280 a, 280 b, and 280 c may also include additionalinformation that is not application specific (e.g., the emailapplication directory 280 a may include the telephone numbers of certaincontacts). It will be appreciated that the invention extends toembodiments utilizing and accessing any number of contact informationdirectories.

Contact Picker Interface and Methods of Use

FIG. 3 illustrates a flowchart 300 of one method for intuitivelydisplaying contact information at a display device from at least onecontact information directory. As shown, the present embodiment includesvarious acts (acts 310, 320, 330, 340, 350, 360, 370, 380, 390, 392, and394) and a step (step 396) for performing the method illustrated in FIG.3. The acts and step of FIG. 3 will now be described with specificreference to FIGS. 4-8, which illustrate certain embodiments of theinterface of the invention.

The first act of the illustrated method includes receiving a focus inputdirected at an input object, such as a type-in line, act 310. Focusinput may include, for example, tabbing a prompt into the type-in lineor hovering a pointer (e.g., a mouse pointer) over the type-in line.Upon receiving the focus input directed at the type-in line, the methodincludes an act of displaying a filtered list of expected contactscomprising a list of contacts that are most likely to be selected by auser. The determination as to what contacts are most likely to beselected by a user can be based on various criteria, including, but notlimited to the frequency of selecting particular contacts, the lastselected contacts, network or geographic proximity of the contact,compatibility of the contact's communication devices, and so forth. Anycriteria used to identify the expected contacts can be resolved by theconflict resolver module 255, as mentioned above.

It will be appreciated that the displayed lists of contacts, asdescribed herein, can also be controlled by the application hosting thecontact picker interface. In particular, the applications hosting theinterface can specify any number or combination of requiredcharacteristics a contact must possess in order to be listed by thecontact picker. For example, the hosting application can specify via anAPI to only show contacts who are online, to only show contacts withphone numbers, to only show contacts who reside in a particular region,to only show contacts having particular software installed on theircomputing systems, or to only show contacts having a predeterminedcombination of required characteristics, including, but not limited tothose listed above. In this manner, the contact picker can effectivelyfilter the list of the displayed contacts.

FIG. 4 illustrates one embodiment of the list of expected contacts thatis provided by the interface when focus input is directed at an inputobject, such as type-in line 420 a. As shown, a mouse pointer ishovering over and directing focus input to type-in line 420 a. The list400 may disappear after the mouse pointer 430 is moved from type-in line420 a. When the mouse pointer is directed to type-in line 420 b, thelist 400 may reappear. However, when the mouse pointer is directed totype-in line 420 c, the list 400 may not reappear if the type-in line420 c is not designated to receive contact information. Whether atype-in line is designated to receive contact information is determinedby the specific application and communicated to the user interfacethrough the modules described above in reference to FIG. 2. According toone embodiment, the expected contacts list 400 is displayed proximate tothe type-in line 420 a that is receiving focus input.

The list 400 of expected contacts may include any number of expectedcontacts and in any predefined order. According to one embodiment, thelist of expected contacts includes a list of no more than sevencontacts. The list of expected contacts can be arranged in alphabeticalorder, in order of most frequent use, in order of most common use, orany other predefined or random order.

When one of the listed contacts is selected, such as with the click of amouse pointer or with other selection input (act 330), the contactinformation corresponding to the selected contact, which is appropriatefor the particular application, is inserted into the type-in line (act340). What is considered “appropriate contact information” is generallyapplication specific and corresponds to information that is required toperform a desired function with the application. For example, theappropriate contact information for an email application may include theemail address of a contact that is necessary for sending an emailmessage. The appropriate contact information may also be specifiedaccording to other criteria, such as by the directory from which thecontact information is obtained, and so forth.

According to one embodiment, the applications specify what contactinformation is required by the applications. For example, if anapplication requires an email address then the application will specifyto the user interface that the appropriate contact information comprisesemail addresses so that they can be obtained and displayed by the userinterface accordingly. It will be appreciated, however, that the userinterface can also be configured with security mechanisms to prevent theapplication from obtaining contact information that is not required bythe application.

Although the previous example is provided with respect to emailfunctionality, it will be appreciated that the scope of the inventionextends to other embodiments in which the contact information isutilized by other application to enable different functionality. Forexample, other applications may utilize the contact information toinitiate a telephony session, initiate a telephone call, initiate anetwork connection, initiate a gaming session, access a website, performa financial transaction, send material goods via postal mail, and soforth.

It will also be appreciated that it is not necessary for the actualcontact information utilized by the application to populate the type-inline. In particular, the type-in line may be populated with friendlynames or other characters and objects that that link or point to theactual contact information utilized by the application. For example, inthe email context, the type-in line may be filled with the contact's‘friendly name’ linking to an email address, rather than the contact'sactual email address.

FIG. 5 illustrates one embodiment in which a type-in line 520 has beenpopulated with contact information, namely, the contact name of JohnDoe, one of the expected contacts listed in list 400 of FIG. 4. FIG. 5also illustrates a related list 500 that identifies related contacts tothe selected contact John Doe. This list 500 of related contacts isautomatically provided, according to one embodiment, when a listedcontact has been selected by the user, act 350.

The contacts listed in list 500 are associated with the selected contactby some relationship determined by the schema module and conflictresolver module of FIG. 2. An example of a relationship that may existbetween a selected contact and the listed related contacts may includeany association made previously between the selected contact and the oneor more related contacts. For example, the fact that the selectedcontact was emailed at the same time as one of the related contacts mayestablish a suitable relationship. Relationships can also be establishedby virtue of having been mapped into the same classification or group bythe schema module. For example, two contacts may be associated bybelonging to the same group, family, business, organization, geographiclocation, and so forth. A suitable relationship may also be drawn from aprevious association made between the contacts in the type-in line 520.(e.g., a previous email listing all of the related contacts.)

FIG. 5 also illustrates a “more” link 550 that may be selected to obtaina more extensive listing of related contacts or to launch additionaluser interfaces having searching, filtering, and querying functionality.It will also be appreciated that the “more” link 550 may be used withany list provided by the interface of the invention to obtain anexpanded listing of contacts or to search for additional contacts.

If a user does not select one of the listed contacts, the user may begintyping or otherwise entering the desired contact information directlyinto the type-in line. Manually entered input is referred to herein asalternative input. Upon receiving alternative input, act 360, the methodof the invention includes the step for finding one or more unexpectedcontacts containing the desired contact information, step 396. Step 396can include any corresponding acts suitable for finding an unexpectedcontact. According to one embodiment, step 396 includes a combination ofcorresponding acts 370, 380, 390, 392, and 394.

The first corresponding act of step 396 includes searching stores forcontacts matching the user input, act 370. This generally includessearching one or more contact information directories in one or morestorage media for desired contact information that matches thealternative input entered by the user. The number of storage media(stores) that are searched and the order in which they are searched maybe modified to accommodate any desired purpose. For example, it may bedesired to first search a local store having a contact informationdirectory that pertains to the current application prior to searchingother stores, although this is not necessary.

Upon finding only a single unexpected contact that has desired contactinformation matching the alternative input, the method of FIG. 3 furtherincludes the act of populating the type-in line with the remainingportion of the desired contact information, act 380. This is shown anddescribed below in more detail with specific reference to FIG. 7.

Upon finding a plurality of unexpected contacts that each have contactinformation matching the alternative input, the method further includesthe act of displaying an alternative list of at least some of theunexpected contacts, act 390. This is shown and described below in moredetail with specific reference to FIG. 6.

Upon failing to find an unexpected contact having contact informationmatching the alternative input, the method further includes the act ofdisplaying additional search options for obtaining the desired contactinformation, act 392. This is shown and described below in more detailwith specific reference to FIG. 8.

FIG. 6 illustrates a type-in line 620 that has received alternativeinput comprising the letter J. Having received this alternative input,the interface of the invention displays the alternative list 600 of mostlikely contacts, as shown. This list is generated from a search of oneor more disparate contact information directories that may be locatedwithin one or more disparate storage media, as described above. In thispresent embodiment, each of the listed contacts has a name beginningwith the letter J, matching the alternative input entered by the user.It will be appreciated, however, that the matching contact informationdoes not need to include the characters of a name. For example, thematching contact information may comprise the characters or numbers ofan address, a telephone number, or any other contact information.Contact information can also be matched based on user-added keywords(e.g. “college buddy”), that have been added by the user with anotherinterface.

If one of the unexpected contacts is selected by the user, then thetype-in line 620 is automatically populated with the appropriate andcorresponding contact information of the selected contact.Alternatively, if the unexpected contact corresponds with more than oneappropriate contact information option, then the plurality of contactinformation options can be displayed prior to populating the type-inline 620. For example, in the present embodiment, the contact JuddFilmore has two email addresses 660 that were discovered during thesearch. Therefore, both of the email addresses 660 are displayed forselection. Once an email address is selected, it populates the type-inline 620. Although this previous example has been given with referenceto unexpected contacts, it will be appreciated that this functionalityof displaying available contact information options also extends toexpected contacts listed in list 400 of FIG. 4. The invention alsoextends to embodiments in which the available contact informationoptions provide different types of contact information. For example, anapplication that enables both email and telephony functionality from amay simultaneously provide both email address information as well astelephone numbers for selection.

Attention is now directed to FIG. 7 to illustrate how the interfaceautomatically populates the type-in line 720 with the remaining portionof the contact information that matches the portion of contactinformation entered by the user, act 380. In the present embodiment, twonames are entered within the type-in line 720, namely, John Doe andVictor Smith. The first name was selected from list 400 of FIG. 4. Uponselecting John Doe from the list 400, table 500 appeared, as describedabove in reference to FIG. 5. However, list 500 disappeared when theuser entered alternative input 770 comprising the letters “Vic”. Afterentering the characters “Vic,” the type-in line 720 is automaticallypopulated with the remaining portion 780 of the desired contactinformation comprising the characters “tor Smith”, which correspondswith and matches the alternative input 770 entered by the user.According, the combination of the remaining portion 780 and thealternative input 770, entered by the user, comprise the entirety of thedesired contact information. In this example, the interface onlypopulates the remaining portion of the type-in line 720 once it isdetermined that only a single contact has contact information matchingthe alternative input entered by the user. For example, thisauto-complete function would not be performed after entering only theletters “v” or “vi” if there was another contact named Vivien who hadthe same two first letters as Victor, so that both matched the userinput.

If no contact is discovered during the search having contact informationmatching the alternative input entered by the user, then the interfacedisplays additional search options for finding the desired contactinformation. This act may be performed automatically, or only uponreceiving a user request to access a menu containing the additionalsearch options, act 393. For example, the buttons 440, 540, and 640 maybe displayed in any of the lists 400, 500, and 600 to provide the user ameans for providing the menu of additional search options.

FIG. 8 illustrates one embodiment of a dialog 800 that may be utilizedby the interface of the invention to display additional search optionsfor searching for desired contact information. As shown, the dialog 800includes a type-in line 820 that may be used to begin a query search, asdescribed above. A list 830 of available contact information directoriesis also provided. This list 830 of available contact informationdirectories may include any number and variety of contact informationdirectories the user interface has access to. For example, in thepresent embodiment, the user interface has access to a “My Contacts”directory of personal contacts that is stored in the local storagemedium 270 of the computing system 200 of FIG. 2, a “Company Directory”of corporate contacts stored on a server that the computing system 200is connected to, and a “Recent Contacts” directory that is storedlocally as a subdirectory of the “My Contacts” directory. Although bydefault, in a preferred embodiment, the search will include allavailable directories.

When a listed directory is selected, then the dialog 800 will displaythe contacts contained in that directory. For example, the dialog 800 iscurrently displaying the contacts of the My Contacts directory. To helpscroll through the contacts, the dialog 800 may include a scrolling bar840, as shown. It will be appreciated that such a scrolling bar may alsobe utilized with any of the other lists 400, 500, 600 described herein.The dialog 800 may also include type-down functionality within a givenlist, such that typing a few letters will automatically scroll the listto items beginning with the typed letters.

The dialog 800 also includes a list 850 of filters that can be used toobtain a list of contacts defined by a filter. The filters may apply toindividual contact information directories or to a plurality of contactinformation directories. For example, the “name” filter may identify allavailable contacts by name from a single directory identified in list830. Alternatively, the “name” filter may cumulatively identify allavailable contacts by name from every directory the interface has accessto. Other non-limiting examples of filters that may be used with theinterface include location filters that can be used to identify contactsassociated by a geographic or network location and group filters thatcan be used to identify contacts associated by groups or organizations.Filters may also be customized to identify contacts from a particularapplication directory, such as contacts identified in an Outlook emailapplication. Additionally, ISVs can add filters and/or directories tosearch for the desired contact.

If the user is unable to find a contact with any of the searchingobjects described, the user interface may present the user with an “Add”contact object 860 which will link the user to a menu for adding a newcontact to a desired directory, such as the “My Contacts” directory.However, the interface and modules required for adding a new contact arenot described herein.

In summary, the present invention provides methods, systems, andcomputer program products including user interfaces, for obtaining anddisplaying contact information. The interfaces of the invention can beused in various applications to search for and display contactinformation from a variety of disparate contact information directories.

It will be appreciated that even though many of the examples providedherein are directed to email interface applications, the invention alsoextends to other applications, including, but not limited to telephonyand telephone applications, network gaming applications, financialapplications, time management applications, information kioskapplications, internet applications, word processing applications,facsimile and telecopy applications, and so forth. Furthermore, eventhough many of the embodiments shown and described above illustrateinterfaces displaying only a limited number of contacts and contactinformation, it will be appreciated that the interfaces may be modifiedto display any desired number of contacts and any variety ofcorresponding contact information.

It will also be appreciated that although many of the embodimentsdescribed above relate to providing a listing of contacts by name, thelist of contacts may also include rich contact objects (e.g., images)that can be used to ascertain information about the listed contacts. Byway of example, and not limitation, each listed contact may be displayedwith a corresponding rich tile image that displays certain attributesand that links to other information.

It will also be appreciated that although many examples are providedwith respect to providing contact information when focus input isdirected at a type-in line that the scope of the invention extends toembodiments in which focus input is directed to other input objects,such as fields, cells, and so forth.

Accordingly, the present invention may be embodied in other specificforms without departing from its spirit or essential characteristics.The described embodiments are to be considered in all respects only asillustrative and not restrictive. The scope of the invention is,therefore, indicated by the appended claims rather than by the foregoingdescription. All changes which come within the meaning and range ofequivalency of the claims are to be embraced within their scope.

1. In a computing system that is connected with a display device andthat includes a user interface that is configured to display contactinformation at the display device, a method for intuitively displayingcontact information at the display device from a plurality of contactinformation directories, the method comprising: an act of receivingfocus input directed at a type-in line that is displayed at the displaydevice, the type-in line being configured to receive desired contactinformation for enabling a desired function to be performed with thecontact information; upon receiving the focus input, an act ofautomatically displaying a list of expected contacts proximate thetype-in line, the expected contacts aggregated from a plurality ofdifferent contact information directories accessible to the computersystem; upon receiving a selection input that selects one of theexpected contacts, an act of populating the type-in line with thedesired contact information, the desired contact informationcorresponding to the selected one of the expected contacts; and uponreceiving an alternative input other than a selection of an expectedcontact and that comprises at least part of the desired contactinformation, automatically performing acts of: performing a search inthe plurality of different contact information directories for one ormore unexpected contacts having the desired contact information;receiving first contact information results from a first contactinformation directory, the received first contact information resultsfor one or more unexpected contacts having the desired contactinformation stored in the first contact information directory, the firstcontact information being in a first format, the first contactinformation directory being separate and distinct from other contactinformation directories in the plurality of contact directories;receiving second contact information results from the second contactinformation directory, the received second contact information resultsfor one or more unexpected contacts having the desired contactinformation stored in the second contact information directory, thesecond contact information in a second data format different than thefirst data format, the second contact information directory beingseparate and distinct from the first contact information directory;aggregating the first and second contact information results into adisplayable contact information list organized according to a singleunifying schema such that the first contact information in the firstformat and the second contact information in the second different formatcan be displayed within the same displayable contact list; anddisplaying the aggregated contact information list at the displaydevice.
 2. A method as recited in claim 1, wherein the search for one ormore unexpected contacts results in the identification of only a singleunexpected contact having corresponding contact information that matchesthe alternative input and that includes a remaining portion of thedesired contact information, and wherein the method further includes anact of populating the type-in line with the remaining portion of thedesired contact information.
 3. A method as recited in claim 1, whereinthe search for one or more unexpected contacts results in theidentification of a plurality of unexpected contacts, each havingcorresponding contact information that matches the alternative input,and wherein the method further includes an act of displaying analternative list containing at least some of the unexpected contacts,the alternative list being displayed proximate the type-in line.
 4. Amethod as recited in claim 3, wherein upon receiving a selection inputthat selection one of the unexpected contacts, the method furtherincludes an act of populating the type-in line with the desired contactinformation corresponding to the selected one of the unexpectedcontacts.
 5. A method as recited in claim 1, wherein the search for oneor more unexpected contacts fails to identify any unexpected contactshaving corresponding contact information that matches the alternativeinput, and wherein the method further includes an act of displaying amenu of additional search options for searching the plurality of contactinformation directories for the desired contact information.
 6. A methodas recited in claim 1, wherein the plurality of contact informationdirectories are located in a plurality of disparate storage media.
 7. Amethod as recited in claim 1, wherein the focus input comprises apointer hovering over the type-in line.
 8. A method as recited in claim1, wherein prior to populating the field of the type-in line, the methodfurther includes: an act of displaying a plurality of selectable contactinformation options corresponding to the selected one of the expectedcontacts, and an act of receiving a selection of one of the plurality ofdiscrete contact information options, such that the type-in line ispopulated with the selected contact information option.
 9. A method asrecited in claim 8, wherein the plurality of discrete contactinformation options includes at least one of email addresses, telephonenumbers, web addresses, and building addresses.
 10. A method as recitedin claim 8, wherein the plurality of contact information options aredisplayed upon receiving focus input directed at the selected one of theexpected contacts.
 11. A method as recited in claim 1, wherein uponpopulating the type-in line with the desired contact information, themethod further includes an act of automatically displaying a relatedlist identifying one or more related contacts, wherein the one or morerelated contacts have a relationship with the selected one of theexpected contacts.
 12. A method as recited in claim 11, wherein therelationship includes an association made previously of the selectedcontact and the one or more related contacts in the type-in line.
 13. Amethod as recited in claim 1, wherein the list of expected contactsdisplays no more than seven of the expected contacts.
 14. A method asrecited in claim 13, further including an act of displaying a selectableoption for displaying any expected contacts that exist beyond the sevendisplayed contacts.
 15. A method as recited in claim 1, wherein thedesired contact information includes at least one of a name, an addressand a telephone number.
 16. A method as recited in claim 1, wherein thedesired functionality includes at least one of sending an email message,accessing a website, initiating a telephone call, performing a financialtransaction, and initiating a gaming session.
 17. A method as recited inclaim 1, wherein the list of expected contacts identifies the expectedcontacts in an order based on at least one of an alphabetical order anda most often used order.
 18. A method as recited in claim 1 wherein theinput object comprises a type-in line, and wherein the act of providingthe desired contact information comprises the act of populating thetype-in line with the desired contact information.
 19. A method asrecited in claim 1, wherein one or more applications hosting the userinterface specify what type of contact information is desired.
 20. Amethod as recited in claim 19, wherein the one or more applications areprevented from specifying types of contact information that are notneeded by the one or more applications.
 21. A method as recited in claim1, wherein the one or more applications hosting the user interface canspecify characteristics that must be possessed by one or more contactsbefore the one or more contacts are displayed by the user interface. 22.A method as recited in claim 1, wherein the at least one contactinformation directory comprises a plurality of disparate contactinformation directories.
 23. In a computing system that is connectedwith a display device and that includes a user interface that isconfigured to display contact information at the display device, amethod for intuitively displaying contact information at the displaydevice from a plurality of contact information directories, the methodcomprising: an act of receiving focus input directed at a type-in linethat is displayed at the display device, the type-in line beingconfigured to receive desired contact information for enabling a desiredfunction to be performed with the contact information; upon receivingthe focus input, an act of automatically displaying a list of expectedcontacts proximate the type-in line, the expected contacts aggregatedfrom a plurality of different contact information directories accessibleto the computer system; upon receiving a selection input that selectsone of the expected contacts, an act of populating the type-in line withthe desired contact information, the desired contact informationcorresponding to the selected one of the expected contacts; uponreceiving an alternative input other than a selection of an expectedcontact and that comprises at least part of the desired contactinformation, performing the acts of: performing a search in theplurality of contact information directories from among the plurality ofdifferent contact information directories for one or more unexpectedcontacts having the desired contact information; receiving first contactinformation results from a first contact information directory, thereceived first contact information results for one or more unexpectedcontacts having the desired contact information stored in the firstcontact information directory, the first contact information being in afirst format, the first contact information directory being separate anddistinct from other contact information directories in the plurality ofcontact directories; receiving second contact information results fromthe second contact information directory, the received second contactinformation results for one or more unexpected contacts having thedesired contact information stored in the second contact informationdirectory, the second contact information in a second data formatdifferent than the first data format, the second contact informationdirectory being separate and distinct from the first contact informationdirectory; aggregating the first and second contact information resultsinto a displayable contact information list organized according to asingle unifying schema such that the first contact information in thefirst format and the second contact information in the second differentformat can be displayed within the same displayable contact list; anddisplaying the aggregated contact information list at the displaydevice; upon identifying only a single unexpected contact havingcorresponding contact information that matches the alternative input andthat includes a remaining portion of the desired contact information, anact of populating the type-in line with the remaining portion of thedesired contact information; upon identifying a plurality of unexpectedcontacts, each having corresponding contact information that matches thealternative input, an act of displaying an alternative list containingat least some of the unexpected contacts, the alternative list beingdisplayed proximate the type-in line; and upon failing, during thesearch, to identify any unexpected contacts having corresponding contactinformation that matches the alternative input, an act of displaying amenu of additional search options for searching the plurality of contactinformation directories for the desired contact information.
 24. Amethod as recited in claim 23, wherein the plurality of contactinformation directories includes a plurality of disparate contactinformation directories, and wherein the plurality of disparate contactinformation directories are located in a plurality of disparate storagemedia.
 25. A method as recited in claim 23, wherein the focus inputcomprises a pointer hovering over the type-in line.
 26. A method asrecited in claim 23, wherein prior to populating the field of thetype-in line, the method further includes: an act of displaying aplurality of selectable contact information options corresponding to theselected one of the expected contacts, and an act of receiving aselection of one of the plurality of discrete contact informationoptions, such that the type-in line is populated with the selectedcontact information option.
 27. A method as recited in claim 26, whereinthe plurality of discrete contact information options includes at leastone of email addresses, telephone numbers, web addresses, and buildingaddresses.
 28. A method as recited in claim 23, wherein upon populatingthe type-in line with the desired contact information, the methodfurther includes an act of automatically displaying a related listidentifying one or more related contacts, wherein the one or morerelated contacts have a relationship with the selected one of theexpected contacts.
 29. A method as recited in claim 23, wherein the listof expected contacts displays no more than seven of the expectedcontacts and further includes a selectable option for displaying anyexpected contacts that exist beyond the expected contacts that aredisplayed.
 30. A method as recited in claim 23, wherein the desiredcontact information includes at least one of a name, an address and atelephone number.
 31. A method as recited in claim 23, wherein thedesired functionality includes at least one of sending an email message,accessing a website, initiating a telephone call, performing a financialtransaction, and initiating a gaming session.
 32. A method as recited inclaim 23, wherein the expected contacts and unexpected contacts aredisplayed in an order based on at least one of an alphabetical order anda most often used order.
 33. A computer program product for a computingsystem that is connected with a display device and that includes a userinterface that is configured to display contact information at thedisplay device, the computer program product comprising one or morerecordable-type computer-readable media having stored thereon computerexecutable instructions for implementing a method for intuitivelydisplaying contact information at the display device from a plurality ofcontact information directories, the method comprising; an act ofreceiving focus input directed at a type-in line that is displayed atthe display device, the type-in line being configured to receive desiredcontact information for enabling a desired function to be performed withthe contact information; upon receiving the focus input, an act ofautomatically displaying a list of expected contacts proximate thetype-in line, the expected contacts aggregated from a plurality ofdifferent contact information directories accessible to the computersystem; upon receiving a selection input that selects one of theexpected contacts, an act of populating the type-in line with thedesired contact information, the desired contact informationcorresponding to the selected one of the expected contacts; uponreceiving an alternative input other than a selection of an expectedcontact and that comprises at least part of the desired contactinformation, performing the acts of: performing a search in theplurality of contact information directories from among the plurality ofdifferent contact information directories for one or more unexpectedcontacts having the desired contact information; receiving first contactinformation results from a first contact information directory, thereceived first contact information results for one or more unexpectedcontacts having the desired contact information stored in the firstcontact information directory, the first contact information being in afirst format, the first contact information directory being separate anddistinct from other contact information directories in the plurality ofcontact directories; receiving second contact information results fromthe second contact information directory, the received second contactinformation results for one or more unexpected contacts having thedesired contact information stored in the second contact informationdirectory, the second contact information in a second data formatdifferent than the first data format, the second contact informationdirectory being separate and distinct from the first contact informationdirectory; aggregating the first and second contact information resultsinto a displayable contact information list organized according to asingle unifying schema such that the first contact information in thefirst format and the second contact information in the second differentformat can be displayed within the same displayable contact list; anddisplaying the aggregated contact information list at the displaydevice; upon identifying only a single unexpected contact havingcorresponding contact information that matches the alternative input andthat includes a remaining portion of the desired contact information, anact of populating the type-in line with the remaining portion of thedesired contact information; upon identifying a plurality of unexpectedcontacts, each having corresponding contact information that matches thealternative input, an act of displaying an alternative list containingat least some of the unexpected contacts, the alternative list beingdisplayed proximate the type-in line; and upon failing, during thesearch, to identify any unexpected contacts having corresponding contactinformation that matches the alternative input, an act of displaying amenu of additional search options for searching the plurality of contactinformation directories for the desired contact information.
 34. Acomputer program product as recited in claim 33, wherein therecordable-type computer readable medium includes system memory.
 35. Acomputer program product as recited in claim 33, wherein the pluralityof contact information directories includes a plurality of disparatecontact information directories, and wherein the plurality of disparatecontact information directories are located in a plurality of disparatestorage media.
 36. A computer program product as recited in claim 33,wherein prior to populating the field of the type-in line, the methodfurther includes: an act of displaying a plurality of selectable contactinformation options corresponding to the selected one of the expectedcontacts, and an act of receiving a selection of one of the plurality ofdiscrete contact information options, such that the type-in line ispopulated with the selected contact information option.
 37. A computerprogram product as recited in claim 33, wherein upon populating thetype-in line with the desired contact information, the method furtherincludes an act of automatically displaying a related list identifyingone or more related contacts, wherein the one or more related contactshave a relationship with the selected one of the expected contacts. 38.A computer program product as recited in claim 33, wherein the desiredcontact information includes at least one of a name, an address and atelephone number.
 39. A computer program product as recited in claim 33,wherein the desired functionality includes at least one of sending anemail message, accessing a website, initiating a telephone call,performing a financial transaction, and initiating a gaming session. 40.The method of claim 1, wherein the plurality of contact informationdirectories comprise at least one local contact information directoryand one or more remote contact information directories relative to thecomputer system.
 41. The method of claim 1, wherein the act ofautomatically displaying a list of expected contacts proximate thetype-in line further comprises automatically displaying a list ofexpected contacts and unexpected contacts proximate the type-in line,the expected and unexpected contacts aggregated from the plurality ofdifferent contact information directories accessible to the computersystem.
 42. The method of claim 1, wherein the act of automaticallydisplaying a list of expected contacts proximate the type-in linefurther comprises, upon receiving the focus input at the type-in line ofthe activated software application, automatically displaying a list ofexpected contacts in a format corresponding to the activated softwareprogram proximate the type-in line, the expected contacts aggregatedfrom a plurality of different contact information directories accessibleto the computer system according to a priority order determined by acomputer user, the priority order being modifiable according to theuser's desired purpose.
 43. The method of claim 1, wherein theaggregated results indicate that the search resulted in a match.